package com.roads.project.mapper;

import java.util.List;
import com.roads.project.domain.ProBoqMeterage;
import org.apache.ibatis.annotations.Param;

/**
 * 计量清单Mapper接口
 * 
 * @author nhp
 * @date 2021-12-14
 */
public interface ProBoqMeterageMapper {

    /**
     * 根据主键ID查询详情
     *
     * @param id 计量清单主键
     * @return 计量清单
     */
    ProBoqMeterage getModelById(Long id);

    /**
     * 根据计量清单编号查询详情
     *
     * @param meterageBoqCode 计量清单编号
     * @return 计量清单
     */
    ProBoqMeterage getModelByCode(String meterageBoqCode);

    /**
     * 根据计量清单编号查询详情
     *
     * @param meterageBoqCode 计量清单编号
     * @return 计量清单
     */
    ProBoqMeterage getModelByMeterageBoqCode(String meterageBoqCode);

    /**
     * 查询计量清单列表
     *
     * @param ids 计量ID集合
     * @return 计量清单集合
     */
    List<ProBoqMeterage> selectModelListByIds(String[] ids);

    /**
     * 查询列表
     * 
     * @param model 计量清单
     * @return 计量清单集合
     */
    List<ProBoqMeterage> selectModelList(ProBoqMeterage model);

    /**
     * 取最大序号
     *
     * @param institutionBoqCode 标段清单编号
     * @return 最大值
     */
    int getMaxSerialNumber(@Param("institutionBoqCode")String institutionBoqCode);

    /**
     * 整个标段计量清单最大序号
     *
     * @param institutionCode 标段编号
     * @return 计量清单最大值
     */
    List<ProBoqMeterage> selectMaxSerialNumber(@Param("institutionCode")String institutionCode);

    /**
     * 查询标段计量清单数量
     *
     * @param institutionCode 标段编号
     * @return 数量
     */
    int countMeterage(@Param("institutionCode")String institutionCode);

    /**
     * 查询标段下的计量清单是否参与计量
     *
     * @param institutionCode 标段编号
     * @return 数量
     */
    int countPartakeMeterage(@Param("institutionCode")String institutionCode);

    /**
     * 查询变更令号下的计量清单是否参与计量
     *
     * @param changeOrderNo 变更令号
     * @return 数量
     */
    int countPartakeMeterageByChangeOrderNo(@Param("changeOrderNo")String changeOrderNo);

    /**
     * 获取该计量清单合同计量数量
     *
     * @param meterageBoqCode 计量清单编号
     * @return 数量
     */
    int getContractMeterageCount(@Param("meterageBoqCode")String meterageBoqCode);

    /**
     * 获取该计量清单变更计量数量
     *
     * @param meterageBoqCode 计量清单编号
     * @return 数量
     */
    int getChangeMeterageCount(@Param("meterageBoqCode")String meterageBoqCode);

    /**
     * 新增
     * 
     * @param model 计量清单
     * @return 结果
     */
    int insert(ProBoqMeterage model);

    /**
     * 批量增加计量清单
     *
     * @param list 数据集合
     * @return 结果
     */
    int insertBatch(List<ProBoqMeterage> list);

    /**
     * 修改
     * 
     * @param model 计量清单
     * @return 结果
     */
    int update(ProBoqMeterage model);

    /**
     * 删除
     * 
     * @param id 计量清单主键
     * @return 结果
     */
    int delete(Long id);

    /**
     * 批量删除
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteByIds(Long[] ids);

    /**
     * 根据祖籍列表里面的大类删除计量清单
     *
     * @param institutionCode 标段编号
     * @param bigType 大类
     * @return 结果
     */
    int deleteByBigType(@Param("institutionCode")String institutionCode,@Param("bigType") String bigType);

    /**
     * 根据标段编号删除计量清单
     *
     * @param institutionCode 标段编号
     * @return 结果
     */
    int deleteByInstitutionCode(@Param("institutionCode")String institutionCode);

    /**
     * 根据变更令号删除变更计量清单
     *
     * @param changeOrderNo 变更令号
     * @return 结果
     */
    int deleteChangeBoqByChangeOrderNo(@Param("changeOrderNo")String changeOrderNo);

}
